using SharpGraphT.Event;

namespace SharpGraphT.Graph;

public interface IListenableGraph<TV, TE> : IGraph<TV, TE>
    where TE : class, new() {
    event EventHandler<GraphVertexChangeEventArgs<TV>> VertexAdded;

    event EventHandler<GraphVertexChangeEventArgs<TV>> VertexRemoved;

    event EventHandler<GraphEdgeChangeEventArgs<TV, TE>> EdgeAdded;

    event EventHandler<GraphEdgeChangeEventArgs<TV, TE>> EdgeRemoved;

    event EventHandler<GraphEdgeChangeEventArgs<TV, TE>> EdgeWeightUpdated;
}